A host computer can host a virtualized environment. This allows the host computer to support multiple guest operating systems (also known as ‘virtual machines’) and to execute a plurality of applications that interact with these multiple guest operating systems.
The virtualized environment may include a virtualization manager (also called a hypervisor or a virtual machine manager) that allows the multiple guest operating systems to share a single hardware platform (such as a processor) by translating requests for resources (CPU, memory, hard disks) to the underlying hardware platform.
The host computer can be connected to a storage system that provides disk storage resources.
Storage resources of the storage system are exported to host computers in terms of LUNs (logical unit number).
A LUN is indicative of a combination of an accessing entity (e.g., a host computer or an application running at the host computer) and a logical volume. A LUN identifies a logical volume in the storage system that is exported to a specific accessing entity over a storage area network (SAN). Generally, different host computers or different applications within the host computers that access the same logical volume are provided with different LUN values.
A LUN can be addressed by using a communication protocol such as but not limited to internet small computer system interface (iSCSI), small computer system interface (SCSI), Fibre Channel and the like.
The logical volume identified by the LUN, may be a part of a disk drive, an entire disk drive, several disk drives, several partitions within several disk drives, span across a disk array and the like. In any case, the logical volume is treated as if it is a single device.
From the storage system perspective, the LUN or the logical volume is the lowest level of granularity in terms of performance and quality of service (QOS).
In a host of a virtual environment, for a given logical volume, different LUN values are not allocated per each one of the multiple guest operating systems hosted by a single host computer or per each one of the plurality of applications running on top of these multiple guest operating systems. Instead, only one LUN is used by all applications hosted by the host computer that access the same logical volume. Accordingly, the write and read patterns of each guest operating system and of each application cannot be tracked and this prevents an execution of pre-fetching based upon read and write patterns.
Furthermore, the virtualization manager of the host may allocate to different guest operating systems and/or different applications non-continuous logical address spaces within a logical volume in a manner that is not exposed to the storage system and thus the storage system is not able to determine read and write patterns based solely on the order of logical addresses it receives. This is illustrated in FIG. 1.
FIG. 1 illustrates a prior art mapping between virtual disk addresses in a virtual disk presented to one application by the host computer and logical block addresses of a logical volume 11 managed by storage system and exported as a single LUN to a certain host computer. The certain host computer hosts a virtual environment. Logical volume 11 includes multiple successive logical block addresses (LBAs), numbered LBA0 to LBAn 11(0)-11(n).
The virtualization manager hosted by the host computer presents to each guest operating system a virtual disk, such as virtual disks 15 and 16, which are mapped into logical volume 11.
Virtual disk 15 includes m information units, which are presented as sequential to the guest operating system that uses virtual disk 15, but are not necessarily sequential within logical volume 11. For example, information unit 0 in virtual disk 15 is mapped to LBA3 of logical volume 11, information unit 1 is mapped to LBA0 and information unit 2 is mapped to LBA8.
FIG. 1 illustrates each information unit as being mapped into one logical block of logical volume 11, but this is not necessarily so and each information unit may be much bigger than a logical block (for example, a logical block may have a size of 512 bytes while the information unit may have a size of 1M bytes), so that each information unit can be mapped into multiple logical blocks, either contiguous or not.
A sequential read pattern from virtual disk 15 may include reading information unit 0, followed by information unit 1, followed by information unit 2. This sequential read pattern is translated by the virtualization manager to a non-sequential read pattern from logical unit 11: LBA 3, followed by LBA 0, followed by LBA8. In this case, a pre-fetch mechanism that would have been triggered upon detection of sequential read pattern would not be activated.
A pre-fetch mechanism is a mechanism for improving storage access latency, by detecting an access pattern and reading into the cache memory data that was not yet requested to be read, but it is assumed to have a great probability to be read, based on the detected access pattern. When the prefetched data is finally requested to be read it can be provisioned from the cache.
Migration is a process of moving a virtual machine from one host computer to another. Preferably, the migration is not noticeable by the end user, as the down-time is minimal and all the resources (e.g., the virtual disk) of the virtual machine are copied to its new location. The migration capability is being increasingly utilized in clustered virtual environments to provide efficient online system maintenance, reconfiguration and load balancing.
There is a growing need to provide a system, method and computer readable medium for allowing pre-fetch based upon read and write patterns of individual guest operating systems and/or applications.